home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 6 / The Arsenal Files 6 (Arsenal Computer).ISO / pcboard / phnuser3.zip / NEWUSER.BAK < prev    next >
Text File  |  1994-10-24  |  27KB  |  720 lines

  1. ;*****************************************************************************
  2. ;*                                                                           *
  3. ;*                            NEWUSER.PPE v1.60a                             *
  4. ;*                PCBOARD 15.0 NEWUSER REGISTRATION PROGRAM                  *
  5. ;*                                                                           *
  6. ;*                Written by Larry Steele and Jerry Claxton                  *
  7. ;*                 Written in PCBoard Programming Language                   *
  8. ;*                         Compiled on 06-19-1993                            *
  9. ;*                                                                           *
  10. ;*                   "The Shoppe Bulletin Board Systems"                     *
  11. ;*               Node 1 - 708-888-0725 - [16.8 DS] - 80486/50                *
  12. ;*               Node 2 - 708-888-1162 - [16.8 DS] - 80486/40                *
  13. ;*               Node 3 - 708-888-0078 - [16.8 DS] - 80486/40                *
  14. ;*               Node 4 - 708-888-4175 - [16.8 DS] - 80486/40                *
  15. ;*               Node 5 - PRIVATE LINE - [16.8 DS] - 80486/66                *
  16. ;*                                                                           *
  17. ;*          Voice Support - [708-426-9411] - [10:00 am - 11:00 pm]           *
  18. ;*             Ask for Jerry Claxton, Assistant System Operator              *
  19. ;*****************************************************************************
  20.  
  21.  
  22. ;*****************************************************************************
  23. ;* Define variable types                                                     *
  24. ;*****************************************************************************
  25.  
  26. BOOLEAN NO_BATCH_FILE, ALIAS_FLAG
  27.  
  28. INTEGER INPUT_FLAG, LP, NUM_FILES, POS1, POS2, DOTCOUNT
  29. INTEGER PWRD_ARRAY_COUNT, PWRD_ARRAY
  30. INTEGER PROT_ARRAY_COUNT, PROT_ARRAY, I, N
  31.  
  32. STRING  CURRENT_FILE, BAT_PATH, BAT_S, BAT_R, MNP_PROD, TCAN_NAME
  33. STRING  USER_PWD1, USER_PWD2, USER_CITY, USER_BDPHONE, USER_HVPHONE, USER_BRAND
  34. STRING  USER_CLEAR_SCREEN, USER_TRANS, USER_ALIAS, USER_ADDR(5), USER_VER
  35. STRING  KBDSTUFF_STRING1, KBDSTUFF_STRING2, REG_ANSWER
  36. STRING  TEMP_STRING, USER_INPUT
  37. STRING  PWRD_STRARRAY(275,17), ALLOW_ALIAS
  38. STRING  PROT_STRARRAY(50,7), PROT_LETTER(50), PROT_MNP(50)
  39. STRING  PROT_TYPE(50), PROT_DESC(50), TEMP_LINE, INPUT_STRING
  40. STRING  NORM_TIME,TEMP_TIME,TIME_TO_AD,SYSOP_NAME,BBS_NAME,SERNUM,PRICE
  41. STRING  JOHN,X,GRAP,CR,UN_PHONE
  42. ;*****************************************************************************
  43. ;* Load the user information, whats available so far                         *
  44. ;*****************************************************************************
  45. LET PRICE = "10.00"
  46. LET JOHN = "KEY"
  47. FOPEN 1 , PPEPATH () + "SYSOP.CNF", O_RD, S_DN
  48.   FGET 1, SYSOP_NAME
  49.   FGET 1, BBS_NAME
  50.   FGET 1, SERNUM
  51.   FGET 1, NORM_TIME
  52.   FGET 1, TEMP_TIME
  53.   FGET 1, TIME_TO_AD
  54. FCLOSE 1
  55.   IF (EXIST(PPEPATH()+"CLIPER."+JOHN)) GOTO RAT
  56.   IF (SERNUM="000-00-0000") GOTO FATASS
  57.   CLS
  58.   FOR X = 1 TO 7
  59.   PRINTLN
  60.   NEXT X
  61.   PRINTLN " @X0CPLEASE RETURN THE SER# TO @X0E000-00-0000 @X0CAND THE PPE WILL WORK AGIN!"
  62.   PRINTLN " @X0ABY TAMPERING WITH THE SER NUM YOU WILL NOT GET THIS PPE TO RUN AS IF IT WERE "
  63.   PRINTLN " REGISTERED ! @X0B NICE TRY GUY! BUT NO GO.........."
  64.   END
  65.  
  66. :FATASS
  67.   GOSUB NOT_REGED
  68. :RAT
  69.  
  70. GETUSER
  71. USER_CLEAR_SCREEN = YESCHAR()
  72. REG_ANSWER = YESCHAR()
  73. USER_TRANS = U_TRANS
  74.  
  75. ;*****************************************************************************
  76. ;* Start of main program                                                     *
  77. ;*****************************************************************************
  78.  
  79. :START_PROGRAM
  80.    FOPEN 1, PPEPATH() + "NEWUSER.CNF", O_RD, S_DN
  81.    FGET 1, NUM_FILES
  82.    WHILE (!FERR(1) & (LP <> NUM_FILES)) DO
  83.       FGET 1, CURRENT_FILE
  84.  
  85.  
  86.       LP = LP + 1
  87.       IF (EXIST(CURRENT_FILE)) DISPFILE CURRENT_FILE, LANG + SEC + GRAPH
  88.  
  89.       NEWLINE
  90.       WAIT
  91.       IF (LP = NUM_FILES) THEN
  92.      FGET 1, BAT_PATH
  93.      IF (RIGHT(BAT_PATH, 1 <> "\")) BAT_PATH = BAT_PATH + "\"
  94.  
  95.      BAT_S = BAT_PATH + "PCBS"
  96.      BAT_R = BAT_PATH + "PCBR"
  97.      FCLOSE 1
  98.       END IF
  99.    END WHILE
  100.  
  101.  
  102. :REGISTER_INPUT
  103.    IF (EXIST(PPEPATH()+"NOALIAS")) DISPFILE PPEPATH()+"NOALIAS", LANG + SEC + GRAPH
  104. PRINTLN " @X1E┌────────────────────────────────────────────────────────────────────────────@X18@X10@X1E┐@X0E"
  105. PRINTLN " @X1E│  @X1BNext we will ask you to @X1CREGISTER WITH THE BBS. @X1BThis is a simpel form that @X1E@X10@X1E│@X00@X00@X01"
  106. PRINTLN " @X1E│ @X1Bgives us a some basic info on you. @X1CBASIC REGISTRATION IS FREE, BUT IF YOU  @X1E│@X0E"
  107. PRINTLN " @X1E│ @X1Crefuse to fill out the registery forms you will be loged off !             @X1E│@X0E"
  108. println " @X1E└────────────────────────────────────────────────────────────────────────────┘@X0E"
  109.    GOSUB READ_PCBPROT
  110.    GOSUB READ_PCBPWRD
  111.  
  112.    PROMPTSTR 54, REG_ANSWER, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + YESNO + LFBEFORE
  113.    IF (REG_ANSWER = YESCHAR()) THEN
  114.        KBDSTUFF_STRING1 = UPPER(LEFT(REG_ANSWER, 1)) + CHR(13)
  115.  
  116.        NEWLINE
  117.        GOTO PWD_INPUT
  118.    ELSE
  119.        KBDSTUFF NOCHAR() + CHR(13)
  120.        END
  121.    END IF
  122.    GOTO PROGRAM_ERROR
  123.  
  124.  
  125. :PWD_INPUT
  126.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  127.    IF (EXIST(PPEPATH() + "NEW_A")) DISPFILE PPEPATH() + "NEW_A", LANG + SEC + GRAPH
  128.  
  129.    USER_PWD1 = ""
  130.    PROMPTSTR 152, USER_PWD1, 13, MASK_PWD(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + LFAFTER + ECHODOTS
  131.    IF (LEN(USER_PWD1 = 0)) INPUT_FLAG = INPUT_FLAG + 1
  132.  
  133.    IF (PSA(4) & (LEN(USER_PWD1) < READLINE(PCBDAT(), 265))) THEN
  134.        IF (!LEN(USER_PWD1) = 0) INPUT_FLAG = 0
  135.        USER_PWD1 = ""
  136.  
  137.        NEWLINE
  138.        PRINTLN "@X0CPassword too short!  Must be @X0F" + TRIM(READLINE(PCBDAT(), 265), CHR(32)) + " @X0Ccharacters or longer, try again.@X07"
  139.  
  140.        FRESHLINE
  141.        GOTO PWD_INPUT
  142.    ELSEIF (PSA(4) & (INSTR(U_NAME(), USER_PWD1) > 0)) THEN
  143.        INPUT_FLAG = 0
  144.        USER_PWD1 = ""
  145.  
  146.        NEWLINE
  147.        PRINTLN "@X0CYour password cannot be a subset of your name.  While this may make it easy for"
  148.        PRINTLN "@X0Cyou to remember, it also makes it easier for someone to guess your password.@X07"
  149.  
  150.        FRESHLINE
  151.        GOTO PWD_INPUT
  152.    ELSEIF (TRIM(USER_PWD1, CHR(32)) <> "")
  153.        INPUT_FLAG = 0
  154.    ELSE
  155.        FRESHLINE
  156.        GOTO PWD_INPUT
  157.    END IF
  158.  
  159.    USER_PWD2 = ""
  160.    PROMPTSTR 111, USER_PWD2, 13, MASK_PWD(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + ECHODOTS
  161.  
  162.    IF (USER_PWD1 <> USER_PWD2) THEN
  163.        INPUT_FLAG = 0
  164.        USER_PWD1 = ""
  165.        USER_PWD2 = ""
  166.  
  167.        NEWLINES 2
  168.        PRINTLN "@X0CSorry, @FIRST@, the two passwords do not match, try again.@X07"
  169.  
  170.        FRESHLINE
  171.        GOTO PWD_INPUT
  172.    ELSEIF (USER_PWD1 = USER_PWD2) THEN
  173.        INPUT_FLAG = 0
  174.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  175.  
  176.        NEWLINE
  177.        GOTO CITY_INPUT
  178.    ELSE
  179.        FRESHLINE
  180.        GOTO PWD_INPUT
  181.    END IF
  182.    GOTO PROGRAM_ERROR
  183.  
  184.  
  185. :CITY_INPUT
  186.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  187.    IF (EXIST(PPEPATH() + "NEW_B")) DISPFILE PPEPATH() + "NEW_B", LANG + SEC + GRAPH
  188.  
  189.    PROMPTSTR 265, USER_CITY, 24, MASK_ALPHA() + "-,.'" + CHR(32), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  190.    IF (LEN(USER_CITY = 0)) INPUT_FLAG = INPUT_FLAG + 1
  191.  
  192.    IF (TRIM(USER_CITY, CHR(32)) <> "") THEN
  193.        INPUT_FLAG = 0
  194.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  195.  
  196.        NEWLINE
  197.        GOTO BDPHONE_INPUT
  198.    ELSE
  199.        FRESHLINE
  200.        GOTO CITY_INPUT
  201.    END IF
  202.    GOTO PROGRAM_ERROR
  203.  
  204.  
  205. :BDPHONE_INPUT
  206.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  207.    IF (EXIST(PPEPATH() + "NEW_C")) DISPFILE PPEPATH() + "NEW_C", LANG + SEC + GRAPH
  208.  
  209.    PROMPTSTR 113, USER_BDPHONE, 13, MASK_NUM() + "-()" + CHR(32), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  210.    IF (LEN(USER_BDPHONE = 0)) INPUT_FLAG = INPUT_FLAG + 1
  211.  
  212.    IF (TRIM(USER_BDPHONE, CHR(32)) <> "") THEN
  213.        INPUT_FLAG = 0
  214.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  215.  
  216.        NEWLINE
  217.        GOTO HVPHONE_INPUT
  218.    ELSE
  219.        FRESHLINE
  220.        GOTO BDPHONE_INPUT
  221.    END IF
  222.    GOTO PROGRAM_ERROR
  223.  
  224.  
  225. :HVPHONE_INPUT
  226.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  227.    IF (EXIST(PPEPATH() + "NEW_D")) DISPFILE PPEPATH() + "NEW_D", LANG + SEC + GRAPH
  228.  
  229.    PROMPTSTR 114, USER_HVPHONE, 13, MASK_NUM() + "-()" + CHR(32), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  230.    IF (LEN(USER_HVPHONE = 0)) INPUT_FLAG = INPUT_FLAG + 1
  231.  
  232.    IF (TRIM(USER_HVPHONE, CHR(32)) <> "") THEN
  233.        INPUT_FLAG = 0
  234.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  235.  
  236.        NEWLINE
  237.        GOTO BRAND_INPUT
  238.    ELSE
  239.        FRESHLINE
  240.        GOTO HVPHONE_INPUT
  241.    END IF
  242.    GOTO PROGRAM_ERROR
  243.  
  244.  
  245. :BRAND_INPUT
  246.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  247.    IF (EXIST(PPEPATH() + "NEW_E")) DISPFILE PPEPATH() + "NEW_E", LANG + SEC + GRAPH
  248.  
  249.    PROMPTSTR 2, USER_BRAND, 30, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  250.    IF (LEN(USER_BRAND = 0)) INPUT_FLAG = INPUT_FLAG + 1
  251.  
  252.    IF (TRIM(USER_BRAND, CHR(32)) <> "") THEN
  253.        INPUT_FLAG = 0
  254.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  255.  
  256.        NEWLINE
  257.        GOTO MESSAGE_INPUT
  258.    ELSE
  259.        FRESHLINE
  260.        GOTO BRAND_INPUT
  261.    END IF
  262.    GOTO PROGRAM_ERROR
  263.  
  264.  
  265. :MESSAGE_INPUT
  266.    IF (EXIST(PPEPATH() + "NEW_F")) DISPFILE PPEPATH() + "NEW_F", LANG + SEC + GRAPH
  267.  
  268.    PROMPTSTR 556, USER_CLEAR_SCREEN, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + LFBEFORE + YESNO
  269.  
  270.    IF (TRIM(USER_CLEAR_SCREEN, CHR(32)) <> "") THEN
  271.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  272.  
  273.        NEWLINE
  274.        GOTO TRANS_INPUT
  275.    ELSE
  276.  
  277.        NEWLINE
  278.        GOTO TRANS_INPUT
  279.    END IF
  280.    GOTO PROGRAM_ERROR
  281.  
  282.  
  283. :TRANS_INPUT
  284.    IF (!EXIST(READLINE(PCBDAT(), 45))) THEN
  285.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  286.  
  287.        NEWLINE
  288.        GOTO PSA_ALIAS_NAME_INPUT
  289.    END IF
  290.  
  291.    NEWLINE
  292.    PRINTLN "@X70┌────────────────────────────────────────────────────────@X7F┐@X07"
  293.    PRINTLN "@X70│         @X7BP R O T O C O L S   A V A I L A B L E@POS:58@@X7F│@X07"
  294.    PRINTLN "@X70└@X7F────────────────────────────────────────────────────────┘@X07"
  295.  
  296.    NEWLINE
  297.    PRINTLN "@X70┌@X7F────────────────────────────────────────────────────────┐@X07"
  298.  
  299.    FOR I = 1 TO PROT_ARRAY
  300.        IF ((PROT_TYPE(I) <> "I") & (!EXIST(BAT_S + PROT_LETTER(I) + ".BAT")) & (!EXIST(BAT_R + PROT_LETTER(I) + ".BAT"))) NO_BATCH_FILE = TRUE
  301.  
  302.        IF ((!NO_BATCH_FILE) | (PROT_LETTER(I) = "N")) THEN
  303.        INPUT_STRING = INPUT_STRING + PROT_LETTER(I)
  304.        IF (PROT_LETTER(I) = USER_TRANS) THEN
  305.            PRINTLN "@X70│ @XF4=> @X71(@X7E" + PROT_LETTER(I) + "@X71) " + PROT_DESC(I) + "@POS:58@@X7F│@X07"
  306.        ELSE
  307.            PRINTLN "@X70│    @X71(@X7E" + PROT_LETTER(I) + "@X71) " + PROT_DESC(I) + "@POS:58@@X7F│@X07"
  308.        END IF
  309.        END IF
  310.        NO_BATCH_FILE = 0
  311.    NEXT
  312.    PRINTLN "@X70└────────────────────────────────────────────────────────@X7F┘@X07"
  313.  
  314.  
  315.    PROMPTSTR 198, USER_TRANS, 1, INPUT_STRING, FIELDLEN + GUIDE + UPCASE + LFBEFORE
  316.    IF (LEFT(USER_TRANS, 1) = NOCHAR()) THEN
  317.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  318.  
  319.        NEWLINE
  320.        GOTO PSA_ALIAS_NAME_INPUT
  321.    END IF
  322.  
  323.  
  324.    FOR N = 1 TO PROT_ARRAY
  325.        IF ((PROT_TYPE(N) <> "I") & (!EXIST(BAT_S + PROT_LETTER(N) + ".BAT")) & (!EXIST(BAT_R + PROT_LETTER(N) + ".BAT"))) NO_BATCH_FILE = TRUE
  326.  
  327.        IF ((USER_TRANS = PROT_LETTER(N)) & (!NO_BATCH_FILE)) THEN
  328.        IF (PROT_MNP(N) = YESCHAR()) THEN
  329.            IF (!INSTR(MODEM(), ("MNP" | "V42" | "LAPM" | "HST")) & (!ONLOCAL())) THEN
  330.            NEWLINE
  331.            PRINTLN "@X0CProtocol Unavailable - Modem Type Wrong!"
  332.            END
  333.            END IF
  334.        END IF
  335.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  336.  
  337.        NEWLINE
  338.        GOTO PSA_ALIAS_NAME_INPUT
  339.        END IF
  340.        NO_BATCH_FILE = 0
  341.    NEXT
  342.    GOTO PROGRAM_ERROR
  343.  
  344.  
  345. :PSA_ALIAS_NAME_INPUT
  346.    IF (!PSA(1) | (PWRD_STRARRAY(0, 12) = NOCHAR())) THEN
  347.       ALIAS_FLAG = TRUE
  348.       GOTO PSA_STREET_NUMBER1_INPUT
  349.    END IF
  350.  
  351.    IF (EXIST(PPEPATH() + "ALIAS")) DISPFILE PPEPATH() + "ALIAS", LANG + SEC + GRAPH
  352.    PROMPTSTR 690, USER_ALIAS, 25, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  353.  
  354.    IF (LEN(USER_ALIAS)) THEN
  355.        FOPEN 1, READLINE(PCBDAT(), 35), O_RD, S_DN
  356.        NEWLINES 2
  357.        PRINT "@X0ASearching Records ..."
  358.        WHILE (!FERR(1)) DO
  359.       FGET 1, TCAN_NAME
  360.       IF (TRIM(USER_ALIAS, CHR(32)) = TRIM(TCAN_NAME, CHR(32))) THEN
  361.           FCLOSE 1
  362.  
  363.           NEWLINES 2
  364.           PRINTLN "@X0CThe SysOp has disabled the use of this Alias Name.@X07"
  365.  
  366.           USER_ALIAS = ""
  367.           GOTO PSA_ALIAS_NAME_INPUT
  368.       END IF
  369.       DOTCOUNT = DOTCOUNT + 1
  370.       IF ((DOTCOUNT % 20) = 0) PRINT "@X0A."
  371.        END WHILE
  372.        FCLOSE 1
  373.    END IF
  374.  
  375.    IF (U_RECNUM(USER_ALIAS) <> -1) THEN
  376.        LOG "Attempted to use " + TRIM(USER_ALIAS, CHR(32)) + " as an alias.", 0
  377.        NEWLINES 2
  378.        DISPTEXT 256, LFAFTER + BELL
  379.        USER_ALIAS = ""
  380.        GOTO PSA_ALIAS_NAME_INPUT
  381.    ELSE
  382.        USER_ALIAS = STRIP(USER_ALIAS, CHR(250))
  383.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  384.        NEWLINE
  385.        GOTO PSA_STREET_NUMBER1_INPUT
  386.    END IF
  387.     GOTO PROGRAM_ERROR
  388.  
  389.  
  390. :PSA_STREET_NUMBER1_INPUT
  391.    IF (!PSA(3)) GOTO PSA_VERIFICATION_INPUT
  392.    IF (EXIST(PPEPATH() + "NEW_G")) DISPFILE PPEPATH() + "NEW_G", LANG + SEC + GRAPH
  393.  
  394.    INPUTSTR "Street Address and Number", USER_ADDR(0), 0Eh, 50, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  395.  
  396.    IF (USER_INPUT <> "") GOTO USER_INPUTS
  397.    NEWLINE
  398.    GOTO PSA_STREET_NUMBER2_INPUT
  399.    GOTO PROGRAM_ERROR
  400.  
  401.  
  402. :PSA_STREET_NUMBER2_INPUT
  403.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  404.    IF (EXIST(PPEPATH() + "NEW_H")) DISPFILE PPEPATH() + "NEW_H", LANG + SEC + GRAPH
  405.  
  406.    INPUTSTR "Suite or Apartment Number", USER_ADDR(1), 0Eh, 50, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  407.    IF (LEN(USER_ADDR(1) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  408.  
  409.    IF ((TRIM(USER_ADDR(0), CHR(32)) <> "") | (TRIM(USER_ADDR(1), CHR(32)) <> "")) THEN
  410.        INPUT_FLAG = 0
  411.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  412.  
  413.        NEWLINE
  414.        GOTO PSA_CITY_INPUT
  415.    ELSE
  416.        FRESHLINE
  417.        GOTO PSA_STREET_NUMBER2_INPUT
  418.    END IF
  419.    GOTO PROGRAM_ERROR
  420.  
  421.  
  422. :PSA_CITY_INPUT
  423.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  424.    IF (EXIST(PPEPATH() + "NEW_I")) DISPFILE PPEPATH() + "NEW_I", LANG + SEC + GRAPH
  425.  
  426.    INPUTSTR "City, Town or Village", USER_ADDR(2), 0Eh, 25, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  427.    IF (LEN(USER_ADDR(2) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  428.  
  429.    IF (TRIM(USER_ADDR(2), CHR(32)) <> "") THEN
  430.        INPUT_FLAG = 0
  431.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  432.  
  433.        NEWLINE
  434.        GOTO PSA_PROVINCE_STATE_INPUT
  435.    ELSE
  436.        FRESHLINE
  437.        GOTO PSA_CITY_INPUT
  438.    END IF
  439.    GOTO PROGRAM_ERROR
  440.  
  441.  
  442. :PSA_PROVINCE_STATE_INPUT
  443.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  444.    IF (EXIST(PPEPATH() + "NEW_J")) DISPFILE PPEPATH() + "NEW_J", LANG + SEC + GRAPH
  445.  
  446.    INPUTSTR "Province or State", USER_ADDR(3), 0Eh, 10, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  447.    IF (LEN(USER_ADDR(3) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  448.  
  449.    IF (TRIM(USER_ADDR(3), CHR(32)) <> "") THEN
  450.        INPUT_FLAG = 0
  451.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  452.  
  453.        NEWLINE
  454.        GOTO PSA_ZIPCODE_INPUT
  455.    ELSE
  456.        FRESHLINE
  457.        GOTO PSA_PROVINCE_STATE_INPUT
  458.    END IF
  459.    GOTO PROGRAM_ERROR
  460.  
  461.  
  462. :PSA_ZIPCODE_INPUT
  463.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  464.    IF (EXIST(PPEPATH() + "NEW_K")) DISPFILE PPEPATH() + "NEW_K", LANG + SEC + GRAPH
  465.  
  466.    INPUTSTR "Postal/Zip Code", USER_ADDR(4), 0Eh, 10, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  467.    IF (LEN(USER_ADDR(4) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  468.  
  469.    IF (TRIM(USER_ADDR(4), CHR(32)) <> "") THEN
  470.        INPUT_FLAG = 0
  471.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  472.  
  473.        NEWLINE
  474.        GOTO PSA_COUNTRY_INPUT
  475.    ELSE
  476.        FRESHLINE
  477.        GOTO PSA_ZIPCODE_INPUT
  478.    END IF
  479.    GOTO PROGRAM_ERROR
  480.  
  481.  
  482. :PSA_COUNTRY_INPUT
  483.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  484.    IF (EXIST(PPEPATH() + "NEW_L")) DISPFILE PPEPATH() + "NEW_L", LANG + SEC + GRAPH
  485.  
  486.    INPUTSTR "Country or Region", USER_ADDR(5), 0Eh, 15, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  487.    IF (LEN(USER_ADDR(5) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  488.  
  489.    IF (TRIM(USER_ADDR(5), CHR(32)) <> "") THEN
  490.        INPUT_FLAG = 0
  491.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  492.  
  493.        NEWLINE
  494.        GOTO PSA_VERIFICATION_INPUT
  495.    ELSE
  496.        FRESHLINE
  497.        GOTO PSA_COUNTRY_INPUT
  498.    END IF
  499.    GOTO PROGRAM_ERROR
  500.  
  501.  
  502. :PSA_VERIFICATION_INPUT
  503.    IF (!PSA(2)) GOTO USER_INPUTS
  504.  
  505.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  506.    IF (EXIST(PPEPATH() + "VERIFY")) DISPFILE PPEPATH() + "VERIFY", LANG + SEC + GRAPH
  507.  
  508.    PROMPTSTR 706, USER_VER, 25, MASK_ALPHA() + MASK_ASCII() + MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  509.    IF (LEN(USER_VER = 0)) INPUT_FLAG = INPUT_FLAG + 1
  510.  
  511.    IF (TRIM(USER_VER, CHR(32)) <> "") THEN
  512.        INPUT_FLAG = 0
  513.        GOTO USER_INPUTS
  514.    ELSE
  515.        FRESHLINE
  516.        GOTO PSA_VERIFICATION_INPUT
  517.    END IF
  518.    GOTO PROGRAM_ERROR
  519.  
  520.  
  521. :USER_INPUTS
  522.    USER_INPUT = ""
  523.    CLS
  524.    PRINTLN "@X0F[@X0CA@X0F] @X0EPassword                 @X07: @X0F[@X0A" + LEFT(RTRIM(USER_PWD1, CHR(32)) + "·············", 13) + "@X0F]@X07"
  525.    PRINTLN "@X0F[@X0CB@X0F] @X0ECity and State           @X07: @X0F[@X0A" + LEFT(RTRIM(USER_CITY, CHR(32)) + "························", 24) + "@X0F]@X07"
  526.    PRINTLN "@X0F[@X0CC@X0F] @X0EBusiness or data phone   @X07: @X0F[@X0A" + LEFT(RTRIM(USER_BDPHONE, CHR(32)) + "·············", 13) + "@X0F]@X07"
  527.    PRINTLN "@X0F[@X0CD@X0F] @X0EHome or voice phone      @X07: @X0F[@X0A" + LEFT(RTRIM(USER_HVPHONE, CHR(32)) + "·············", 13) + "@X0F]@X07"
  528.    PRINTLN "@X0F[@X0CE@X0F] @X0EBrand of CPU             @X07: @X0F[@X0A" + LEFT(RTRIM(USER_BRAND, CHR(32)) + "······························", 30) + "@X0F]@X07"
  529.    PRINTLN
  530.    PRINTLN "@X0F[@X0CF@X0F] @X0EMessage Clear Screen     @X07: @X0F[@X0A" + USER_CLEAR_SCREEN + "@X0F] @X07(@X03Clear Screen prior to Displaying a Message@X07)@X07"
  531.    PRINTLN "@X0F[@X0CG@X0F] @X0EDefault Protocol         @X07: @X0F[@X0A" + USER_TRANS + "@X0F] @X07(@X03Your default transfer protocol@X07)@X07"
  532.  
  533.    IF (PSA(3)) THEN
  534.       PRINTLN
  535.       PRINTLN "@X0F[@X0CH@X0F] @X0EStreet Address and Number@X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(0), CHR(32)) + "··············································", 46) + "@X0F]@X07"
  536.       PRINTLN "@X0F[@X0CI@X0F] @X0ESuite or Apartment Number@X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(1), CHR(32)) + "··············································", 46) + "@X0F]@X07"
  537.       PRINTLN "@X0F[@X0CJ@X0F] @X0ECity, Town or Village    @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(2), CHR(32)) + "·························", 25) + "@X0F]@X07"
  538.       PRINTLN "@X0F[@X0CK@X0F] @X0EProvince or State        @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(3), CHR(32)) + "··········", 10) + "@X0F]@X07"
  539.       PRINTLN "@X0F[@X0CL@X0F] @X0EPostal Zip Code          @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(4), CHR(32)) + "··········", 10) + "@X0F]@X07"
  540.       PRINTLN "@X0F[@X0CM@X0F] @X0ECountry or Region        @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(5), CHR(32)) + "···············", 15) + "@X0F]@X07"
  541.    END IF
  542.  
  543.    PRINTLN
  544.    IF ((PSA(1)) & (!ALIAS_FLAG)) PRINTLN "@X0F[@X0CN@X0F] @X0EAlias Name               @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ALIAS, CHR(32)) + "·························", 25) + "@X0F]@X07"
  545.    IF (PSA(2)) PRINTLN "@X0F[@X0CO@X0F] @X0EVerification Information @X07: @X0F[@X0A" + LEFT(RTRIM(USER_VER, CHR(32)) + "·························", 25) + "@X0F]@X07"
  546.  
  547.    IF (PSA(1) | PSA(2)) PRINTLN
  548.    PRINTLN "@X0BIf any of the information above is incorrect or inaccurate, now is your chance@X07"
  549.    PRINTLN "@X0Bto change it.  All information will be verified before full access is granted.@X07"
  550.  
  551.    INPUTSTR "(@X0C@MINLEFT@ @X0Fmin. left) Enter the letter to be edited? (@X0CEnter@X0F)=done", USER_INPUT, 0Fh, 1, "abcdefghijklmnoqABCDEFGHIJKLMNOQ", FIELDLEN + GUIDE + UPCASE + LFBEFORE + ERASELINE + BELL
  552.    IF (USER_INPUT = "A") GOTO PWD_INPUT
  553.    IF (USER_INPUT = "B") GOTO CITY_INPUT
  554.    IF (USER_INPUT = "C") GOTO BDPHONE_INPUT
  555.    IF (USER_INPUT = "D") GOTO HVPHONE_INPUT
  556.    IF (USER_INPUT = "E") GOTO BRAND_INPUT
  557.  
  558.    IF (USER_INPUT = "F") GOTO MESSAGE_INPUT
  559.    IF (USER_INPUT = "G") GOTO TRANS_INPUT
  560.  
  561.    IF ((PSA(3)) & (USER_INPUT = "H")) GOTO PSA_STREET_NUMBER1_INPUT
  562.    IF ((PSA(3)) & (USER_INPUT = "I")) GOTO PSA_STREET_NUMBER2_INPUT
  563.    IF ((PSA(3)) & (USER_INPUT = "J")) GOTO PSA_CITY_INPUT
  564.    IF ((PSA(3)) & (USER_INPUT = "K")) GOTO PSA_PROVINCE_STATE_INPUT
  565.    IF ((PSA(3)) & (USER_INPUT = "L")) GOTO PSA_ZIPCODE_INPUT
  566.    IF ((PSA(3)) & (USER_INPUT = "M")) GOTO PSA_COUNTRY_INPUT
  567.  
  568.    IF ((PSA(1)) & (USER_INPUT = "N")) GOTO PSA_ALIAS_NAME_INPUT
  569.    IF ((PSA(2)) & (USER_INPUT = "O")) GOTO PSA_VERIFICATION_INPUT
  570.  
  571.    IF (LEN(USER_INPUT) = 0) GOTO STUFF_KEYBOARD
  572.  
  573.    IF (USER_INPUT = "Q") THEN
  574.        USER_INPUT = NOCHAR()
  575.  
  576.        INPUTSTR "Proceed with Log-Off", USER_INPUT, 0Fh, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + ERASELINE + YESNO
  577.        IF (USER_INPUT = YESCHAR()) HANGUP
  578.    END IF
  579.    GOTO USER_INPUTS
  580.  
  581.  
  582. :STUFF_KEYBOARD
  583.    KBDSTUFF_STRING2 = USER_PWD1 + CHR(13) + USER_PWD2 + CHR(13)
  584.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_CITY + CHR(13)
  585.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_BDPHONE + CHR(13)
  586.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_HVPHONE + CHR(13)
  587.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_BRAND + CHR(13)
  588.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_CLEAR_SCREEN + CHR(13)
  589.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_TRANS + CHR(13)
  590.  
  591.    IF ((PSA(1)) & (!ALIAS_FLAG)) THEN
  592.        KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + STRIP(USER_ALIAS, CHR(250)) + CHR(13)
  593.    END IF
  594.  
  595.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(0) + CHR(13)
  596.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(1) + CHR(13)
  597.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(2) + CHR(13)
  598.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(3) + CHR(13)
  599.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(4) + CHR(13)
  600.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(5) + CHR(13)
  601.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_VER + CHR(13)
  602.  
  603.    KBDSTUFF KBDSTUFF_STRING1 + KBDSTUFF_STRING2
  604.  
  605.    goto SEAN
  606.  
  607.  
  608.  
  609. :READ_PCBPROT
  610.    FOPEN 1, READLINE(PCBDAT(), 45), O_RD, S_DN
  611.    WHILE (!FERR(1)) DO
  612.       FGET 1, TEMP_LINE
  613.  
  614.       IF (LEN(TEMP_LINE)) THEN
  615.       LET TEMP_LINE = REPLACE(TEMP_LINE, CHR(32), CHR(255))
  616.  
  617.       PROT_ARRAY = PROT_ARRAY + 1
  618.       LET TEMP_LINE = REPLACE(TEMP_LINE, ",", ";")
  619.  
  620.       TOKENIZE TEMP_LINE
  621.       WHILE (TOKCOUNT() > 0) DO
  622.          PROT_ARRAY_COUNT = PROT_ARRAY_COUNT + 1
  623.          GETTOKEN PROT_STRARRAY(PROT_ARRAY, PROT_ARRAY_COUNT)
  624.       END WHILE
  625.  
  626.       LET PROT_LETTER(PROT_ARRAY) = PROT_STRARRAY(PROT_ARRAY, 1)
  627.       LET PROT_TYPE(PROT_ARRAY) = PROT_STRARRAY(PROT_ARRAY, 2)
  628.       LET PROT_DESC(PROT_ARRAY) = REPLACE(PROT_STRARRAY(PROT_ARRAY, 4), CHR(255), CHR(32))
  629.       LET PROT_MNP(PROT_ARRAY) = PROT_STRARRAY(PROT_ARRAY, 5)
  630.       END IF
  631.       PROT_ARRAY_COUNT = 0
  632.    END WHILE
  633.    FCLOSE 1
  634.    RETURN
  635.  
  636.  
  637. :READ_PCBPWRD
  638.    FOPEN 1, READLINE(PCBDAT(), 32), O_RD, S_DN
  639.    WHILE (!FERR(1)) DO
  640.       FGET 1, TEMP_LINE
  641.  
  642.       PWRD_ARRAY = PWRD_ARRAY + 1
  643.       LET TEMP_LINE = REPLACE(TEMP_LINE, ",", ";")
  644.  
  645.       TOKENIZE TEMP_LINE
  646.       WHILE (TOKCOUNT() > 0) DO
  647.      PWRD_ARRAY_COUNT = PWRD_ARRAY_COUNT + 1
  648.      GETTOKEN PWRD_STRARRAY(PWRD_ARRAY, PWRD_ARRAY_COUNT)
  649.  
  650.      IF (PWRD_STRARRAY(PWRD_ARRAY, 2) = U_SEC) THEN
  651.          PWRD_STRARRAY(0, PWRD_ARRAY_COUNT) = PWRD_STRARRAY(PWRD_ARRAY, PWRD_ARRAY_COUNT)
  652.          FCLOSE 1
  653.      END IF
  654.       END WHILE
  655.       PWRD_ARRAY_COUNT = 0
  656.    END WHILE
  657.    RETURN
  658.  
  659.  
  660. :ACCESS_DENIED
  661.    NEWLINE
  662.    PRINTLN "@X0CAccess Denied - Refused to Complete Registration!"
  663.    HANGUP
  664.  
  665.  
  666. :PROGRAM_ERROR
  667.    NEWLINES 2
  668.    PRINT "PPE Program Error... Please nodify SysOp... "
  669.    DELAY (50)
  670.  
  671.    FRESHLINE
  672.    HANGUP
  673.  
  674. :SEAN
  675. cls
  676. println
  677. PRINTLN "  @X0B@FIRST@,@X0A  WELCOME TO THE @X0C@BOARDNAME@ @X0A!!!!"
  678. PRINTLN
  679. PRINTLN "@X19┌────────────────────────────────────────────────────────────────────────────@X1B┐@X0B"
  680. PRINTLN "@X1B@X19│ @X1AThe SYSOP (operator of this bbs) grants new users such as your self extra  @X1B│@X0B"
  681. PRINTLN "@X1A@X1B@X19│  @X1Afor this call only. This is to help you get beter acqainted with the bbs. @X1B│@X0B"
  682. PRINTLN "@X19│ @X1AThe normal time for a @X1CNON-PAID USER @X1Ais@X1E "+STRING (NORM_TIME)+" @X1Aand the time@X1B ( that is given )   │@X0B"
  683. PRINTLN "@X09@X19│ @X1Athat the sysop has given you for this call ony as a new user is :@X1D"+ string (temp_time)+"@X1B        │@X0B"
  684. PRINTLN "@X1B└────────────────────────────────────────────────────────────────────────────┘@X0B"
  685. DELAY 120
  686. ADJTIME + (TIME_TO_AD ())
  687. GOTO EXIT
  688.  
  689. :NOT_REGED
  690.  
  691.  
  692.     CLS
  693.  
  694. PRINTLN
  695. PRINTLN
  696. PRINTLN "           @X1B┌────────────────────────────────────────────────────┐@X0B"
  697. PRINTLN "           @X1B│          @X10┌─────────────────────────────@X19┐  @X1B         │@X0B"
  698. PRINTLN "           @X1B│          @X10│  @X9CTHIS PPE IS UNREGISTERED   @X19│           @X1B│@X0B"
  699. PRINTLN "           @X1B│          @X10└@X19─────────────────────────────┘           @X1B│@X0B"
  700. PRINTLN "           @X1B│ @X1FThis is a unregistered PHANTOM WARE PPE. Please    @X1B│@X0B"
  701. PRINTLN "           @X1B│   @X1Fask your sysop to register it ! It only cost     @X1B│@X0B"
  702. PRINTLN "           @X1B│   @X1A$@X0A@X1C"+string (PRICE)+"@X1F!! When this ppe is registered this nag@X1B    │@X0B"
  703. PRINTLN "           @X1B│   screen will go away! @X1ERegistering this ppe will   @X1B│@X0B"
  704. PRINTLN "           @X1B│   @X1Ealso remove the unregistered notes and any       @X1B│@X0B"
  705. PRINTLN "           @X1B│   @X1Edealys!!    @X9CPlease register today!               @X9B@X1B│@X0B"
  706. PRINTLN "           @X1B└────────────────────────────────────────────────────┘@X0B"
  707. Println "              @X0AThe Phantom BBS 134 Nevins ST. Dunkirk Ny. 14048 "
  708. println "              @X0Anode 1 @X0C(@X0B716@X0C)-@X0B366@X0C-@X0B3884"
  709. println "              @X0Anode 2 @X0C(@X0B716@X0C)-@X0B366@X0C-@X0B2003 @X0C(@X0Bnote: @X0CNode 2 open @X0E12:am @X0Cto @X0E6:am"
  710. PRINTLN "                     @X0C(@X0B716@X0C)-@X0B792@X0C-@X0B4374 @X0Enode 1 ring down Brocton Ny. "
  711. println "             Voice   @X0C(@X0B716@X0C)-@X0B366@X0C-@X0B2003 @X0CPhantom Computer Sales"
  712. PRINTLN "            @X0D@X0E=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= "
  713. PRINTLN "                            PAUSEING FOR 10 SEC.  @X0E"
  714.  
  715.     DELAY 120
  716. RETURN
  717.  
  718. :EXIT
  719.   END
  720.